package com.cloud.jvm;

/**
 * 类加载过程分为三个阶段：
 * 1.加载
 *  将类的字节码载入方法区，并创建类的.class对象
 *  如果此类的父类没有加载，则先加载父类
 *  加载是懒惰执行的
 * 2.链接
 *  验证：验证类是否符合Class规范，合法性、安全性检查
 *  准备：为static变量分配空间，设置默认值
 *  解析：将常量池的符号引用解析为直接引用
 * 3.初始化
 *  执行静态代码块与非final静态变量的赋值
 *  初始化是懒惰执行的
 */
public class SingletonTest {
    public static void main(String[] args) throws InterruptedException {
        System.out.println(Singleton.var);
        Thread.sleep(1000);
        Singleton singleton = Singleton.getInstance();
    }
}
